レガシーLinux/MySQLサーバーの段階的マイグレーションとバージョンジャンプ戦略
1行要約
MySQL 5.1のような超レガシー環境を最新MariaDB 11.xへ直接ダンプ・復元すると内部データディクショナリやインデックス破損が発生するため、5段階の順次バイナリアップグレード(5.1 ➔ 5.5 ➔ 5.7 ➔ 8.0 ➔ MariaDB)とステージング一時サーバーベースのIPスワップSOPを厳守する必要がある。
1. レガシー移行における2大技術障壁
- PHPランタイム互換性 (PHP 5.2/5.3 ➔ PHP 8.x):
mysql_*廃止モジュールや厳格な型定義により、レガシーWebソースの改修が必須。 - データベースエンジンの直接ジャンプ不可: システムカタログ構造(
mysql.*)や文字コードデフォルト値の違いにより直接移行時はデータ破損のリスク大。
[MySQL レガシーバージョンジャンプロードマップ]
MySQL 5.1 ──> MySQL 5.5 ──> MySQL 5.7 ──> MariaDB 10.11(LTS) ──> MariaDB 11.4
│ │ │ │
(MyISAM) (InnoDB) (JSON/utf8mb4) (新規オプティマイザ)2. 4段階の無停止/最小ダウンタイム移行手順 (SOP)
Step 1. 新規ターゲット一時サーバー(Staging)の構築
最新OS(Rocky Linux 9.x / Ubuntu 24.04 LTS)上にPHP-FPM、MariaDB 11.4、Nginx/Apacheスタックを事前構成。
Step 2. 1次データ同期およびローカルhosts検証
- WebルートおよびDBダンプをステージングへ1次転送。
- クライアントPCの
hostsファイルに一時サーバーIPを登録し、管理画面やクエリエラー(sql_mode)を事前検証。
Step 3. 順次DBスキーマおよびデータアップグレード
バージョンごとにmysql_upgradeを実行しシステムカタログを更新。
bash
mysql_upgrade -u root -p --forceStep 4. 最終カットオーバー (Cutover) および IPスワップ
- メンテナンス突入: 旧サーバーのWeb/DBデーモンを停止(新規書き込み完全遮断)。
- 最終差分ダンプ&インポート: 停止状態で差分データのみを高速インポート(所要時間5〜10分)。
- IPスワップ (IP Exchange):
- 旧サーバーのパブリックIPを新サーバーへ切り替え、DNS伝播遅延(TTL)なしで即座にトラフィックを新環境へルーティング。
3. コアチェックポイント (Gotchas)
- 文字コード不整合 (latin1 vs euckr/cp949 vs utf8mb4): MySQL 5.1時代に
latin1テーブルへ日本語/韓国語バイナリを流し込んでいたレガシー構成があるため、ダンプ時の--default-character-set=latin1指定と文字コード変換検証が必須。 - パスワードハッシュ (
old_passwords): MySQL 5.1の16バイト旧パスワードハッシュは最新DBで認証不可となるため、移行前に全DBユーザーの認証方式を再設定する。
投稿日: 2026-05-17 23:17:13更新日: 2026-08-15 13:57:00